﻿using Microsoft.AspNetCore.Mvc.Filters;

namespace Bird.OAWeb.WebAPI.Filters
{
    /// <summary>
    /// AOP面向切面的思想：采用异常过滤器，来统一处理 控制器方法执行时发生的异常
    /// </summary>
    public class OAWebExceptionFilter : IExceptionFilter
    {
        //构造函数 依赖注入ILogger<>
        private ILogger<OAWebExceptionFilter> logger;

        public OAWebExceptionFilter(ILogger<OAWebExceptionFilter> logger)
        {
            this.logger = logger;
        }
        //实现接口方法
        public void OnException(ExceptionContext context)
        {
            //在方法中，处理异常，写入NLog日志
            Exception ex = context.Exception;
            var message = "错误信息为" + ex.Message;
            logger.LogError(message);//写入日志
            context.ExceptionHandled = true;//把异常标记为已处理
        }
    }
}
